
// // 第一题
// namespace test1
// {
// #include <iostream>
//     using namespace std;

//     const int N = 1e9 + 10;
//     int g[N][N];
//     int f[N][N] int n;

//     int main()
//     {
//         cin >> n;
//         for (int i = 1; i <= n; i++)
//         {
//             for (int j = 1; j <= i; j++)
//             {
//                 cin >> g[i][j];
//             }
//         }
//         // 1. 状态表示  f[i][j]表示从顶点(1, 1)到(i, j)点所有路径里面的最大路径和
//         // 2. 状态转移方程:  f[i][j] = max(f[i][j-1], f[i-1][j]) + g[i][j]
//         for (int i = 1; i <= n; i++)
//         {
//             for (int j = 1; j <= i; j++)
//             {
//                 f[i][j] = max(f[i][j - 1], f[i - 1][j]) + g[i][j];
//             }
//         }
//         int res = 0;
//         for (int i = 1; i <= n; i++)
//             res = max(res, f[n][i]);
//         cout << res << endl;
//         return 0;
//     }
// }

// // 第二题
// namespace test2
// {
// #include <iostream>
//     using namespace std;

//     int n, k;
//     int a;

//     void Init(vector<int>& v)
//     {
//         int s = a;
//         int i = 1;
//         while (s)
//         {
//             int r = s % 10;
//             v.[i++] = r;
//             s /= 10;
//         }
//     }

//     int GetNums(vector<int>& v, int l, int r)
//     {
//         int res = 0;
//         while(l<=r)
//         {
//             res = res*10+v[l];
//             l++;
//         }
//     }

//     int main()
//     {
//         cin >> n >> k;
//         long long ans = 1;
//         // 1. 状态表示dp[i][j]表示该数的前i位划分成j段时所求出的最大k段乘积      返回值: dp[n][k]
//         // 2. 状态转移方程  dp[i][j] = max(dp[i][j], dp[i-x][j-1]* nums[i-x+1, i]);        x= 1~i-1
//         // 3. 假设对于一个数1234， 求出nums[i-x+1, i]  用vector将数的每一位都存起来 , 比如1234  v[1] = 1, v[2] = 2, v[4] = 4, 将来res = res* 10 + nums[i]  （i枚举你求的那一段）
//         cin >> a;
//         vector<int> v(n + 1);
//         Init(v);

//         for(int i = 1;i<=n;i++)
//         {
//             for(int j = 1;j<=k;j++)
//             {
//                 for(int x = 1;x<=i-1;x++)
//                 {
//                     dp[i][j] = max(dp[i][j], dp[i-x][j-1]* GetNums(v, i-x+1, i));
//                 }
//             }
//         }
//         cout<<dp[n][k]<<endl;
//         return 0;
//     }

// }